#include "gameboard.h"

class engine
{
private:
Gameboard board;
//******************************************************** parser
bool comand(string input);
bool comment(string input);
bool move(string input);

//******************************************************* engine
void show_table();
void hide_table();
void select_piece_black();
void select_piece_white();
void show_next_pos();


bool expr(string input)
{
if(comand(input))
{
	return true;
}
if(move(input))
{
	return true;
}
if(comment(input))
{
	return true;
}
}

bool comand(string input)
{
	for(i=0;i<input.size();i++)//.leangth in java
	{
		if(input[i]==' ')// indexing does not work in java so just use if(input.indexof(" ")>=0) //no loop required
		{	
			return false;
		}
	}
	if(input=="exit"||input=="EXIT")// input.compareto("exit")
	{
		exit();// system.exit()
		return true;
	}
	if(input=="display_on"||input=="DISPLAY_ON")
	{
		show_table();
		return true;
	}
	if(input=="display_off"||input=="DISPLAY_OFF")
	{
		hide_table();
		return true;
	}
	if(input=="easy"||input=="EASY")/////////////////////////////
	{
		return true;
	}
	if(input=="medium"||input=="MEDIUM")/////////////////////////////////
	{
		return true;
	}
	if(input=="hard"||input=="HARD")/////////////////////////////////////////
	{
		return true;
	}
	if(input=="white"||input=="WHITE")
	{
		select_piece_white();
		return true;
	}
	if(input=="black"||input=="BLACK")
	{
		select_piece_black();
		return true;
	}
	if(input=="undo"||input=="UNDO")//////////////////////////////////
	{
		return true;
	}
	if(input=="redo"||input=="REDO")/////////////////////////////////
	{
		return true;
	}
	if(input=="show_next_pos"||input=="SHOW_NEXT_POS")
	{
		show_next_pos();
		return true;
	}
	// cout invalid command
	return false;
}

bool move(string input)
{ 
	int i=0
	if(input[i]=='m'&&input[++i]=='o'&&input[++i]=='v'&&input[++i]=='e'&&input[++i]==' ')	
	{
		if(input[++i].isalpha())
		{
			if(input[++i].isdigit())// we have to check for a to h. but i left it like this just in case we nead cases.// same for isdigit.
			{
				return true;
			}
		}
	}

	//incorrect cell number 
	return false;
	}
}

bool comment(string input)
{
	if(input[0]==';')
	{
		return true;
	}
	return false;
}	

void show_table()
{
	board.display();
	board.showDisplay(true);
}

void show_table()
{
	board.display();
	board.showDisplay(true);
}

void hide_table()
{
	board.showDisplay(false);
}

void select_piece_black()
{
board.black();
board.setup();
}

void select_piece_white()
{
board.white();
board.setup();
}

void show_next_pos()// working on this
{
	char curr=board.currentColor;
	
	
			
		
